--- /dev/null
+#!/bin/sh
+# the next line restarts using wish \
+exec wish "$0" "$@"
+
+#
+# This was largely cribbed from the TCL demo code. My TCL skills weren't
+# that great when I last used it about ten years ago and my Tk skills never
+# existed before. So be kind.
+#
+
+set font {Helvetica 14}
+set ifile {}
+set ofile {}
+set use_shortnames 0
+
+proc positionWindow w {
+ wm geometry $w +300+300
+}
+
+proc showCmd w {
+ global ifile ofile use_shortnames ftyperead ftypewrite
+ set cmd "-i $ftyperead -f $ifile"
+ if {$use_shortnames > 0} {
+ set cmd [concat $cmd "-s"]
+ }
+ set cmd [concat $cmd "-o $ftypewrite -F $ofile"]
+ tk_messageBox -icon info -message $cmd
+}
+
+set w .filebox
+catch {destroy $w}
+toplevel $w
+wm title $w "gpsbabel"
+wm iconname $w "filebox"
+positionWindow $w
+
+#label $w.msg -font $font -wraplength 4i -justify left -text "Enter a file name in the entry box or click on the \"Browse\" buttons to select a file name using the file selection dialog."
+#pack $w.msg -side top
+
+frame $w.buttons
+pack $w.buttons -side bottom -fill x -pady 2m
+button $w.buttons.dismiss -text Cancel -command "destroy $w"
+button $w.buttons.code -text OK -command "showCmd $w"
+pack $w.buttons.dismiss $w.buttons.code -side left -expand 1
+
+foreach i {read write} {
+ set f [frame $w.$i]
+ set ftype "ftype$i"
+ label $f.lab -text "Select a file to $i: " -anchor e
+ entry $f.ent -width 20
+ button $f.but -text "Browse ..." -command "fileDialog $w $f.ent $i"
+# TODO: Get this list from 'gpsbabel -?' instead of hardcoding it here.
+ tk_optionMenu $f.ftypes $ftype geo gpsman gpx \
+ magellan mapsend pcx mapsource gpsutil tiger csv xmap dna psp \
+ cetus gpspilot magnav garmin mxf holux ozi tpg
+ pack $f.lab -side left
+ pack $f.ent -side left -expand yes -fill x
+ pack $f.but -side left
+ pack $f -fill x -padx 1c -pady 3
+ pack $f.ftypes -side right -padx 45
+}
+set ftyperead "geo"
+set ftypewrite "mapsend"
+
+ checkbutton $w.strict -text "Make Up Shortnames" \
+ -variable use_shortnames -onvalue 1 -offvalue 0
+ pack $w.strict -anchor c
+
+proc fileDialog {w ent operation} {
+ # Type names Extension(s) Mac File Type(s)
+ #
+ #---------------------------------------------------------
+ set types {
+ {"All files" * }
+ {"loc files" {.loc} }
+ {"Waypoint files" {.wpt} }
+ }
+ global ifile ofile
+ if {$operation == "read"} {
+ set ifile [tk_getOpenFile -filetypes $types -parent $w]
+ if [string compare $ifile ""] {
+ $ent delete 0 end
+ $ent insert 0 $ifile
+ $ent xview end
+ } ;
+ } else {
+ set ofile [tk_getSaveFile -filetypes $types -parent $w \
+ -initialfile Untitled ]
+ if [string compare $ofile ""] {
+ $ent delete 0 end
+ $ent insert 0 $ofile
+ $ent xview end
+ } ;
+ }
+}